/**
 * 206. 反转链表
 *
 * 【简单】
 *
 * 给你单链表的头节点 head ，请你反转链表，并返回反转后的链表。
 *
 * 示例 1：
 * 【https://assets.leetcode.com/uploads/2021/02/19/rev1ex1.jpg】
 * 输入：head = [1,2,3,4,5]
 * 输出：[5,4,3,2,1]
 *
 * 示例 2：
 * 【https://assets.leetcode.com/uploads/2021/02/19/rev1ex2.jpg】
 * 输入：head = [1,2]
 * 输出：[2,1]
 *
 * 示例 3：
 * 输入：head = []
 * 输出：[]
 */

import { ListNode } from '../utils/list'

function reverseList(head: ListNode | null): ListNode | null {
	if (!head) {
		return head
	}

	let p = head
	let prev = null as unknown as ListNode

	while (p && p.next) {
		const next = p.next
		p.next = prev

		prev = p
		p = next
	}

	return prev
}
